﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ecommerce.Model;

namespace Ecommerce.Admin.Paginas
{
    public partial class ListarPedidos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                CarregarStatusEnvio();
                CarregarStatusPagamento();
                CarregarStatusPedido();

            }
        }

        private void CarregarPedidos()
        {
            FiltroPedidoModel filtro = new FiltroPedidoModel();

            if (!String.IsNullOrEmpty(txtNumPedido.Text))
                filtro.IdentificadorPedido = Convert.ToInt32(txtNumPedido.Text);
            
            if(!String.IsNullOrEmpty(txtDtInicio.Text))
                filtro.DataInicio = Convert.ToDateTime(txtDtInicio.Text);
            else
                filtro.DataInicio = null;

            if (!String.IsNullOrEmpty(txtDtFim.Text))
                filtro.DataFim = Convert.ToDateTime(txtDtFim.Text);
            else
                filtro.DataFim = null;

            if (!String.IsNullOrEmpty(ddlStatus.SelectedValue))
                filtro.IdentificadorStatusPedido = Convert.ToInt32(ddlStatus.SelectedValue);
            else
                filtro.IdentificadorStatusPedido = null;

            if (!String.IsNullOrEmpty(ddlStatusEnvio.SelectedValue))
                filtro.IdentificadorStatusEnvio = Convert.ToInt32(ddlStatusEnvio.SelectedValue);
            else
                filtro.IdentificadorStatusEnvio = null;

            if (!String.IsNullOrEmpty(ddlStatusPagamento.SelectedValue))
                filtro.IdentificadorStatusPagamento = Convert.ToInt32(ddlStatusPagamento.SelectedValue);
            else
                filtro.IdentificadorStatusPagamento = null;

            List<tb_ped_pedido> pedidos = PedidoModel.Instance.ListarPedidos(filtro);
            grvPedidos.DataSource = pedidos;
            grvPedidos.DataBind();        
        }

        private void CarregarStatusEnvio()
        {
            ddlStatusEnvio.DataSource = PedidoModel.Instance.ListarStatusEnvio();
            ddlStatusEnvio.DataTextField = "sep_des_status_envio_pedido";
            ddlStatusEnvio.DataValueField = "sep_idt_status_envio_pedido";
            ddlStatusEnvio.DataBind();
            ddlStatusEnvio.Items.Insert(0, new ListItem("Todos",""));
        }

        private void CarregarStatusPagamento()
        {
            ddlStatusPagamento.DataSource = PedidoModel.Instance.ListarStatusPagamento();
            ddlStatusPagamento.DataTextField = "spp_des_status_pagamento_pedido";
            ddlStatusPagamento.DataValueField = "spp_idt_status_pagamento_pedido";
            ddlStatusPagamento.DataBind();
            ddlStatusPagamento.Items.Insert(0, new ListItem("Todos", ""));
        }

        private void CarregarStatusPedido()
        {
            ddlStatus.DataSource = PedidoModel.Instance.ListarStatusPedido();
            ddlStatus.DataTextField = "spe_des_status_pedido";
            ddlStatus.DataValueField = "spe_idt_status_pedido";
            ddlStatus.DataBind();
            ddlStatus.Items.Insert(0, new ListItem("Todos", ""));
        }

        protected void grvPedidos_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            CarregarPedidos();
            grvPedidos.PageIndex = e.NewPageIndex;
            grvPedidos.DataBind();
        }

        protected void grvPedidos_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var pedido = (tb_ped_pedido)e.Row.DataItem;
                e.Row.Cells[0].Text = pedido.ped_idt_pedido.ToString();
                e.Row.Cells[1].Text = pedido.ped_vlr_total_pedido.Value.ToString("c");
                e.Row.Cells[2].Text = pedido.tb_spl_status_pedido_log.LastOrDefault().tb_spe_status_pedido.spe_des_status_pedido;
                e.Row.Cells[3].Text = pedido.tb_spal_status_pagamento_log.LastOrDefault().tb_spp_status_pagamento_pedido.spp_des_status_pagamento_pedido;
                e.Row.Cells[4].Text = pedido.tb_sel_status_envio_log.LastOrDefault().tb_sep_status_envio_pedido.sep_des_status_envio_pedido;
                e.Row.Cells[5].Text = pedido.ped_dat_criacao.Value.ToString();

                LinkButton lkb = (LinkButton)e.Row.FindControl("lkbEditar");
                lkb.Text = "Detalhes";
                lkb.PostBackUrl = "DetalhesPedidos.aspx?IdPed=" + pedido.ped_idt_pedido;
            }
        }

        protected void btnPesquisar_Click(object sender, EventArgs e)
        {
            this.CarregarPedidos();
        }
    }
}